import {
  getUserInfo
} from '../util/getUserInfo';
var log = require('../util/log.js')
const ws = require('../util/websocket');
const TEST_ACCOUNT = require('../../account');
const TAG_NAME = 'VR-INDEX'
const initRoom = require('../../room_webview/util/enterRoom');

Page({
  data: {
    sdkAppId: TEST_ACCOUNT.sdkappid,
    userSign: '', // 用户sig
    jsCode: '', // 微信login获取jsCode
    openId: '', // 对应小程序openId
    isShare: false, // 是否已分享
    roomID: null, // 房间Id
    initReady: false, // 判断当前页面初始化是否完成
    enterType: null, // 0 小程序跳转 1 小卡片跳转
    canIUse: wx.canIUse('button.open-type.getUserInfo'), // 获取用户权限
    hasUserInfo: true,
    role: null,
    errMsg: null, // 错误信息
    errorToolMsg: null, // 错误提示语
    imgUrl: 'https://www.rdata.top/vrhelper/haoyi/image' // 图片服务
  },

  /**
   * 页面加载
   * @param {*} options 参数项
   */
  onLoad: async function (options) {
    this.showLoad()
    log.debug(TAG_NAME, "onload========", options)
    if (options.roomID) {
      // 从分享的链接进的
      const res = await initRoom.enterRoom(options);
      Object.keys(res).forEach((key) => {
        this.setData({
          [key]: res[key]
        })
      })
      // 如果入口为卡片
      if (this.data.enterType === 1) {
        this.data.hasUserInfo ? this.searchGroup() : this.setInitReady();
      }
    } else {
      this.setData({
        exitMode: options.exitMode ? options.exitMode : '1'
      })
      // 报错信息展示
      const {
        msg,
        toolMsg
      } = options;
      this.initError(msg, toolMsg);
    }
  },

  /**
   * 获取用户信息
   */
  async bindGetUserInfo() {
    const {
      enterType,
      openId,
      agentId,
      serviceUrl
    } = this.data;
    await getUserInfo(enterType, openId, agentId, serviceUrl);
    this.setData({
      hasUserInfo: true
    })
    // 卡片入口跳转
    if (enterType === 1) {
      // 如果入口为卡片 查找群组加入
      this.searchGroup();
    }
  },

  /**
   * 根据群组id查询
   */
  searchGroup() {
    // 测试版本直接跳转
    // this.jumpPath()
    // 增加后台判断逻辑
    let self = this;
    wx.request({
      url: this.data.serviceUrl + '/room/joinRoom',
      data: {
        roomId: this.data.roomID,
        userId: this.data.openId,
      },
      method: 'POST',
      header: {
        'content-type': 'application/json' // 默认值
      },
      success(res) {
        console.log('获取房间号', res)
        if (res.data.success) {
          self.setData({
            role: res.data.body,
            initReady: true,
          })
          // 跳转到room
          self.jumpPath()
        } else {
          log.debug(TAG_NAME, "无进房权限")
          self.joinError();
        }
      },
      fail(res) {
        log.debug(TAG_NAME, "获取房间失败")
        self.joinError();
      }
    })
  },

  /**
   * 入群失败提示
   */
  joinError() {
    this.initError('会话已结束', '请联系理财经理重新建立')
  },

  /**
   * 携带用户信息，进入会客间
   */
  jumpPath() {
    const {
      openId,
      roomID,
      role,
      wrapUrl,
      sdkAppId,
      userSign,
      wsUrl,
      debugType,
      serviceUrl,
      enterType
    } = this.data
    this.hideLoad()
    // 获取完userSig 进行跳转
    const url = `/pages/tic/room_webview/room/room?userId=${openId}&roomID=${roomID}&role=${role}&wrapUrl=${wrapUrl}&wsUrl=${wsUrl}&userSign=${userSign}&sdkAppId=${sdkAppId}&debugType=${debugType}&serviceUrl=${encodeURIComponent(serviceUrl)}&enterType=${enterType}`;
    log.debug(TAG_NAME, 'url==', url)
    wx.reLaunch({
      url,
    });
  },

  /**
   * 页面卸载
   */
  onUnload: function () {
    log.debug(TAG_NAME, "onunload========")
    ws.closeWs("index")
  },

  /**
   * 页面展示
   */
  onShow(options) {
    // TODO 待补充 未按正常逻辑退出 再次进入 
    console.log(TAG_NAME, 'page show', options)
    //隐藏home按钮
    wx.hideHomeButton()
  },

  /**
   * 设置初始化成功状态
   */
  setInitReady() {
    this.setData({
      initReady: true
    }, () => {
      this.hideLoad()
    })
  },

  /**
   * 显示加载框
   */
  showLoad() {
    if (!this.data.isLoading) {
      wx.showLoading({
        title: '加载中'
      })
      this.setData({
        isLoading: true
      })
      log.debug(TAG_NAME, '显示loading框')
    }
  },

  /**
   * 隐藏加载框
   */
  hideLoad() {
    if (this.data.isLoading) {
      wx.hideLoading()
      this.setData({
        isLoading: false
      })
      log.debug(TAG_NAME, '关闭loading框')
    }
  },

  /**
   * 阻止触摸
   */
  preventTouchMove() {
    //阻止触摸
  },

  /**
   * 错误信息统一显示
   * @param {*} msg 错误信息文本
   * @param {*} toolMsg 模态框文本
   */
  initError(msg, toolMsg) {
    log.error(TAG_NAME, "错误信息", msg)
    if (toolMsg === 'undefined') {
      toolMsg = null;
    }
    if (msg && !this.data.showModal) {
      this.setData({
        showModal: true,
        errMsg: msg,
        errorToolMsg: toolMsg || null
      })
    } else {
      log.error(TAG_NAME, "已存在提示框", msg)
    }
    // 错误时统一显示关闭小程序
    this.setData({
      enterType: 3
    }, () => {
      this.setInitReady()
    })
  },

  /**
   * 退出页面
   */
  bindHangUp: function () {
    // 兼容银保
    wx.redirectTo({
      url: '/pages/blank/blank',
    })
  }
})